Many modern computer systems simultaneously perform a variety of processes, each of which may have particular needs for available resources of the computer systems. For example, many modern computer systems simultaneously run multiple operating systems, each of which may have particular needs for available resources. At least some such computer systems employ interfaces termed advanced configuration and power interfaces (ACPIs) that allow for multiple operating systems to interface the hardware (and/or firmware) of the computer systems. Also for example, modern computer systems typically run multiple applications simultaneously, where each of the applications may have particular needs for available resources.
There are many different resources of computer systems that can potentially be allocated to different processes having needs for those resources. For example, most computer systems have multiple memory devices, ranging from cache memory to main memory devices including random access memory (RAM) devices (e.g., dynamic RAM or static RAM devices) as well as other types of memory such as read only memory (ROM) devices or external memory devices. In some computer systems, not only specific devices but also memory portions or locations within the various hardware devices also potentially are divisible and potentially allocable. Also for example, most computer systems have one or more processing devices (e.g., central processing units (CPUs) such as microprocessors), and the processing power of these devices can allocated to different processes.
Often the allocation of resources to the multiple processes of such conventional computer systems is rigidly fixed, either permanently when the computer systems are built or at least whenever the computer system are turned on or rebooted. Yet this rigid allocation of resources can be undesirable, since the needs of the processes can change over time during their operation, such that an allocation of resources that may be appropriate and represent an efficient usage of those resources at a given time may no longer be appropriate and efficient at a later time.
For at least these reasons, it would be advantageous if an improved method and system for resource allocation could be developed by which one or more resources available to a computer system were not so rigidly fixed in terms of their allocation to the different processes of the computer system as is the case with conventional computer systems.